import type { Ref } from 'vue';
import type { AxiosRequestConfig } from 'axios';

/**
 * 租户ID
 */
export const TENANT_ID = 'tenant-id';

/**
 * xxx
 */
export const TERMINAL = 'terminal';

/**
 * 版本
 */
export const VERSION = 'version';

/**
 * 请求的code
 */
export enum API_CODE {
	/**
	 * 成功
	 */
	success = 0,

	/**
	 * 失败
	 */

	fail = 1,

	/**
	 * 未登录 无权限
	 */
	noAuth = 401,

	/**
	 * 服务器错误
	 */
	error = 500,
}

/**
 * 请求超时时间
 */
export const REQUEST_TIMEOUT = 30000;

/**
 * 默认接口请求类型
 */
export const APPLICATION_JSON = 'application/json';
export const APPLICATION_X_WWW_FORM_URLENCODED = 'application/x-www-form-urlencoded';
export const MULTIPART_FORM_DATA = 'multipart/form-data';

/**
 * token key
 */
export const AUTHORIZATION_KEY = 'Authorization';
/**
 * token 前缀
 */
export const AUTHORIZATION_PREFIX = 'Bearer ';

/**
 * 定义标准响应类型
 */
export interface ApiResponse<T> {
	code: number;
	data: T;
	msg: string;
	timestamp: number;
	loading: Ref<boolean>;
}

/**
 * 分页数据
 */
export interface _ApiDataList<T> {
	list: T; // 列表
	total: number; // 总数
}

/**
 * 扩展 AxiosRequestConfig 类型
 */
export interface _AxiosRequestConfig extends AxiosRequestConfig, ExpandConfig {}

export interface ExpandConfig {
	allResponses?: boolean; //  是否响应返回所有响应结果 axios 原始结果
	loading?: Ref<boolean>; // 是否显示loading
}
